t = int(input())
for _ in range(t):
n = int(input())
skill = list(map(int, input().split()))
damage = list(map(int, input().split()))
zeros = sorted([d for s, d in zip(skill, damage) if s == 0], reverse=True)
ones = sorted([d for s, d in zip(skill, damage) if s == 1], reverse=True)
idx = min(len(zeros), len(ones))
res = sum(2 * ones[:idx] + ones[idx:] + 2 * zeros[:idx] + zeros[idx:])
if len(zeros) == len(ones):
res -= min(damage)
print(res)
1382A - Common Subsequence | 1512D - Corrupted Array |
667B - Coat of Anticubism | 284B - Cows and Poker Game |
1666D - Deletive Editing | 1433D - Districts Connection |
2B - The least round way | 1324A - Yet Another Tetris Problem |
246B - Increase and Decrease | 22E - Scheme |
1566A - Median Maximization | 1278A - Shuffle Hashing |
1666F - Fancy Stack | 1354A - Alarm Clock |
1543B - Customising the Track | 1337A - Ichihime and Triangle |
1366A - Shovels and Swords | 919A - Supermarket |
630C - Lucky Numbers | 1208B - Uniqueness |
1384A - Common Prefixes | 371A - K-Periodic Array |
1542A - Odd Set | 1567B - MEXor Mixup |
669A - Little Artem and Presents | 691B - s-palindrome |
851A - Arpa and a research in Mexican wave | 811A - Vladik and Courtesy |
1006B - Polycarp's Practice | 1422A - Fence |